Method for channel routing, and apparatus

ABSTRACT

A channel routing method ( 200 ) comprises computing channel parameters ( 210 ), classifying a channel complexity and estimating a channel height ( 220 ), optionally, determining a trunk placement direction ( 225 ), assigning tracks and layers ( 230 ), determining a quality function QF ( 240 ), and optimizing ( 250 ). The channel complexity is classified using predetermined weighting parameters (a 1  to a 4 ). This classification selects a significance vector n. In the assigning step ( 230 ), the vector n is combined with the channel parameters to a criterion. The criterion is used the select the most suitable assignment. In repetitions of assigning, determining QF and optimizing steps, the significance vector n and, optionally, QF are modified. The repetition are stopped upon compliance of a breaking condition which can refer to QF.

FIELD OF THE INVENTION

The present invention generally relates to the physical design ofelectronic devices, and, more particularly, to channel routing.

BACKGROUND OF THE INVENTION

Computer aided design plays a key role in providing electronic circuitswith very large scale integration (VLSI) on the market. A usefulreference is [1] Naveed Sherwani: “Algorithms for VLSI Physical DesignAutomation”, Second Edition, Kluwer Academic Publishers, Boston,Dordrecht, London, 1995, ISBN 0-7923-9592-1. According to reference [1],the VLSI design cycle usually comprises system specification, functionaldesign, logic design, circuit design, physical design, fabrication,packaging, testing and debugging. The physical design level has severalstages, such as partitioning, floorplanning, placement, routing, andcompaction. Iterations are common so that some steps are performed twiceor more often. In the placement stage, the exact locations of circuitblocks and their terminals are determined and a list for interconnectionnets (i.e. a netlist) between the terminals is generated. Routing is theprocess of finding geometric layouts for all nets in so-called routingregions between the blocks.

A channel is conveniently referred to in the art as a routing regionbounded by two parallel rows of terminals. The distance between therows, often referred to as “channel height”, should be minimized to savesilicon. The estimation of the channel height is very important forfloorplanning iterations.

Further references for channel routing are: [2] Akihiro Hashimoto andJames Stevens: “Wire routing by optimizing channel assignment withinlarge apertures”, Proceedings of the 8th Design Automation Workshop,1971, pages 155-169; [3] David N. Deutsch: “A ‘Dogleg’ Channel Router”,Proceedings of the 13th Design Automation Workshop, 1976, pages 425-433;[4] Howard H. Chen and Ernest S. Kuh: “Glitter: A GridlessVariable-Width Channel Router”, IEEE Transactions on Computer-AidedDesign, vol. CAD-5. No. 4, October 1986, pages 459-465; [5] James Reed,Alberto Sangiovanni-Vincentelli and Mauro Santomauro: “A New SymbolicChannel Router: YACR2”, IEEE Transactions on Computer-Aided Design, vol.CAD-4, No. 3, July 1985, pages 208-219; and [6] Bryan Preas: “ChannelRouting With Non-Terminal Doglegs”, Proceedings of European DesignAutomation Conference, Glasgow, Scotland, 1990, pages 451-458.

The present invention seeks to provide an improved method to optimizechannel routing which mitigates or avoids disadvantages and limitationsof the prior art.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a simplified schematic diagram of a channel by way ofexample;

FIG. 2 is a simplified schematic diagram of a further channel and itsvertical constraint graph (VCG) by way of example;

FIG. 3 illustrates a simplified diagram of a complexity function;

FIGS. 4-5 illustrate simplified schematic diagrams of channels and theircorresponding vertical constraint graphs (VCGs) by way of example;

FIG. 6 illustrates a simplified schematic diagram of a non-assignedtrunk and of a track by way of example;

FIG. 7 illustrates simplified schematic diagrams of two channels toexplain a quality function;

FIG. 8 illustrates a simplified flow chart diagram of a method of thepresent invention;

FIG. 9 illustrates a simplified flow chart diagram of a step in themethod of FIG. 8; and

FIG. 10 illustrates a simplified block diagram of a routing systemaccording to the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

It is an advantage of the present invention, that it can be used tosolve a number of different technical tasks. The present invention willbe illustrated using terms defined in chapter 7 of reference [1], suchas: branch, boundary (upper or top, lower or bottom), channel length,channel height, dogleg, net, netlist, terminal, trunk, vacant terminal,vertical constraint graph (VCG), horizontal constraint graph (HCG) andothers. The present invention is conveniently explained for a grid-modelbut this is not limited thereto. Also, terms such as “horizontal” or“vertical” are only intended to be convenient labels for first andsecond directions, respectively, in a, preferably, rectangularcoordinate system. Those of skill in the art are able, based on thedescription herein, to implement the present invention in an othercoordinate system or for a gridless model.

The art knows a variety of routing methods proposed by differentauthors. Examples are described in chapters 6.2 to 6.8 of reference [1]and in references [2] to [5]. Some methods suit certain requirementsbetter than other requirements. There is no routing method which suitsall routing requirements. In the prior art, channel routing comprisesthe consecutive steps (a) creating an initial track and (b) assigningtracks and layers. The assigning step is regarded as a week point.

According to a method of the present invention, further steps areintroduced. Initially, the channels are automatically analyzed and achannel complexity is classified. After routing and obtainingpreliminary nets by assigning, the quality of the preliminary nets iscompared to predetermined objective criteria. Depending on thecomparison results, the preliminary nets are either accepted or theassigning step is repeated.

The method of the present invention is especially useful for routingtasks in which the VCG does not exhibit cyclic vertical constraints. Byoptimizing, the method minimizes a channel density, reduces the lengthsof conductive connections, and reduces the number of trunk breaks. Thisleads also to a reduction in signal propagation time.

The channel height can be estimated without performing routing indetail. Such an estimate is an important parameter for the floorplanningstage and reduce the number of iterations required on the physicaldesign level. Also, the overall chip area can be reduced. The method isflexible. For example, predetermined parameters can be chosen dependingon a required optimization accuracy.

FIG. 1 illustrates a simplified schematic diagram of channel 100 by wayof example. For convenience, legend 198 illustrates a rectangularcoordinate system with a horizontal x-axis, a vertical y-axis and az-axis, and legend 199 illustrates drawing patterns used in FIG. 1 andin other FIGS. Channel 100 has upper boundary 110 of, for example, J=8terminals 111-118 and lower boundary 120 of J=8 terminals 121-128.Terminals 111, 112, 114, 115 and 117 on boundary 110 and terminals 122,125-127 on boundary 120 are vacant terminals (∘ symbols); and terminals113, 116, and 118 on boundary 110 and terminals 121, 124 and 128 onboundary 120 are non-vacant terminals ( symbols). The distinctionbetween vacant and non-vacant terminals is convenient for explanation.In hardware implementation, the vacant terminals are not required.Vertical dashed lines 130 from upper boundary 110 to lower boundary 120between terminals pairs 111/121 to 118/128 illustrate columns withindices j=1 to j=J (e.g., J=8); and horizontal dashed lines 140 inparallel to boundaries 120 and 110 illustrate tracks with track indicesi=1 to I (e.g., I=2). Having track index i ascending from lower boundary120 to upper boundary 110 is convenient for explanation but notessential for the present invention.

In the example of FIG. 1, bold lines illustrate conductive connectionsin channel 100 which are branches 131-136, dogleg 137 (verticaldirection following columns), and trunks 141-144 (horizontal directionfollowing tracks). The conductive connections are conveniently locatedin M layers along the z-axis. For convenience, the layers are notillustrated in FIG. 1. Conductive connections between the layers arevias 151-158 (□ symbols) located, preferably, perpendicular (z-axis) tothe tracks and columns. As persons of skill in the art understand, therecan be layers which can have (a) only trunks, (b) only branches ordoglegs, and (c) trunks, brunches and doglegs (cf. FIG. 7.3 in reference[2]).

The conductive connections form nets between the non-vacant terminals.Branch 131 (from terminal 113), via 151, trunk 141, via 152, dogleg 137,via 157, trunk 144, via 158, and branch 136 (to terminal 128) form net1. Branch 132 (from terminal 116), via 153, trunk 142, via 154, andbranch 133 (to terminal 133) form net 2. Branch 134 (from terminal 121),via 155, trunk 143, via 156, and branch 135 (to terminal 124) form net3.

Each trunk has a physical trunk width 138 (see legend 199). Space 139 isthe physical distance between neighboring trunks (e.g., between trunks141 and 143) and between a trunk and a boundary. In the simplifieddiagram of FIG. 1 and in the literature, width 138 is convenientlyillustrated as being smaller than space 139. However, width 138 is,preferably, larger than space 139. Assume for convenience of explanationthat width 138 and space 139 are equal throughout channel 100. Avertical unit can be defined as one width 138 plus one space 139.Neglecting one space 139 at one boundary, channel 100 has a channelheight (“Channel_Height”) of 2 vertical units.

Similarly, each branch or dogleg has a physical branch width 148 (seelegend 199). Space 149 is the physical distance between neighboringbranches (or doglegs). Width 148 is conveniently illustrated as beingsmaller than space 149, but in reality, width 148 can be much largerthan space 149. Assume also that width 148 and space 149 is equal inchannel 100. Neglecting one space 149, channel 100 has a track length(“Track_Length”) of 8 horizontal units (width 148 plus space 149).Persons of skill in the art, are able based on the description herein,to practice the present invention using other measurement units.

In FIG. 1, maximum channel density area 160 (e.g., columns 3 to 8, cf.equation (1.4)) is illustrated by a dashed frame.

In the following, expressions used in method 200 (cf. FIGS. 8-9) of thepresent invention are explained.

A local channel density labeled “Local_Channel_Density_(j)” can bedefined for each column j as the number of trunks touching or goingthrough column j. Persons of skill in the art are able to calculateLocal_Channel_Density_(j) from, for example, the HCG. In FIG. 1, valuesare, for example:

Local_Channel_Density_(1)=1 (trunk 143)  (1.2)

Local_Channel_Density_(3)=2(trunks 141 and 143)

A maximum channel density labeled “Max_Channel_Density” is defined asthe maximum value of Local_Channel_Density_(j) from j=1 to J. Thosecolumns j for which

Max_Channel_Density=Local_Channel_Density_(j)  (1.4)

are referred to as saturated columns j (e.g., columns 3 to 8 in area160). The number of saturated columns labeled “Max_Columns” is smallerthan or equal to J, that is:

Max_Columns≦J  (1.6)

An average channel density labeled “Average_Channel_Density” is definedas follows: $\begin{matrix}{{{Average}_{—}{Channel}_{—}{Density}} = {\frac{1}{j}*{\sum\limits_{j = 1}^{J}{{Local}_{—}{Channel}_{—}{{Density}_{—}(j)}}}}} & (1.8)\end{matrix}$

wherein the * symbol stands for multiplication, the fraction line standsfor division, and the Σ symbol stands for multiple addition.

A path value P (j) indicates the length of the longest path in a VCG fortrunks going through column j. Persons of skill in the art usingmathematical graph theory are able to obtain P (j) without the need offurther explanation. An average for P (j) from j=1 to J is furtherreferred to as “PA”.

Persons of skill in the art are able, based on the description herein,to derive Local_Channel_Density, Max_Channel_Density, Max_Columns,Average_Channel_Density, path value P(j) and its average PA(collectively “basic descriptors”) from a channel netlist and thecoordinates of the terminals without the need for further explanation.

Now, channel parameters are introduced. A first channel parameter CS(for “channel suffusion”) is defined as the ratio between the averagechannel density and the maximum channel density, that is:$\begin{matrix}{{CS} = \frac{{Average}_{—}{Channel}_{—}{Density}}{{Max}_{—}{Channel}_{—}{Density}}} & (1.10)\end{matrix}$

A second channel parameter MCDS (for “maximum channel densitysignificance”) is defined as the ratio between the number of saturatedcolumns Max_Columns and the total number of columns J, that is$\begin{matrix}{{MCDS} = \frac{{Max}_{—}{Columns}}{J}} & (1.12)\end{matrix}$

A third channel parameter r(D,P) is a density-to-path-length correlationcoefficient defined as follows: $\begin{matrix}{{r\left( {D,P} \right)} = \frac{\sum\limits_{j = 1}^{J}{\left\lbrack {{L_{—}C_{—}{D(j)}} - {A_{—}C_{—}D}} \right\rbrack*\left\lbrack {{P(J)} - {{PA}(j)}} \right\rbrack}}{J*\sigma_{L_{-}C_{-}D}*\sigma_{P}}} & (1.14)\end{matrix}$

wherein L_C_D (j) is an abbreviation for “Local_Channel_Density (j)”,A_C_D is an abbreviation for “Average_Channel_Density”, σ_(L) _(—) _(C)_(—) _(D) stands for a standard deviation of L_C_D (j) for j=1 to J, andσ_(P) stands for a standard deviation of P(j) for j=1 to

A fourth channel parameter BS (for “boundary suffusion”) is defined asthe ratio between the number of “busy” columns labeled “Busy_Columns”which have conductive connections to non-vacant terminals (e.g.,branches, doglegs, or vias) and the total number of columns J, that is:$\begin{matrix}{{BS} = \frac{{Busy}_{—}{Columns}}{J}} & (1.16)\end{matrix}$

Using channel parameters CS, MCDS, r(D,P), and BS and predeterminedweighting parameters, a₁, a₂, a₃, and a₄, a channel complexity labeled“Complexity” is defined as the sum of ratios between channel parametersand weighting parameters, that is: $\begin{matrix}{{Complexity} = {\frac{CS}{a_{1}} + \frac{MCDS}{a_{2}} + \frac{r\left( {D,P} \right)}{a_{3}} + \frac{BS}{a_{4}}}} & (1.18)\end{matrix}$

A complexity function is explained with more detail in connection withFIG. 3. To include all 4 summands into equation (1.18) is convenient,but not essential for the present invention. The channel complexity canbe obtained for any other number of summands in other combinations.Weighting parameters a₁ to a₄ (collectively “a”) are in a useful valuerange between

0.7≦a≦4.6  (1.20)

Convenient ranges are:

1.3≦a ₁≦1.7  (1.22)

0.7≦a ₂≦0.9

 3.8≦a ₃≦4.6

1.7≦a ₄≦2.1

For channel 100 having M=2 layers, preferred values are approximately,a₁=1.5, a₂=0.8, a₃=4.2, and a₄=1.9.

Using the channel complexity, a channel quality labeled “Quality” isdefined as a sum of a product of the channel complexity with a firstpredetermined factor (“Factor”) and a predetermined offset labeled“Offset”, that is:

Quality=Factor*Complexity+Offset  (1.24)

Factor and Offset can be obtained, for example, by least squareregression of experimental values. Persons of skill in the art know howto perform such estimations. The value for Factor is conveniently in therange between

0.1≦Factor≦0.2  (1.26)

A preferred value is approximately Factor=0.13. The value for Offset isconveniently in the range between

0.8≦Offset≦0.9  (1.28)

A preferred value is approximately Offset=0.87. A preliminary channelheight (“Channel_Height”) from the channel parameters can be estimated,for example, according to the following equation:

Channel_Height=Max_Channel_Density*Quality  (1.30)

FIG. 2 is a simplified schematic diagram of further channel 100′ and itsVCG 150′ by way of example. Channel 100′ has upper boundary 110′ with 5non-vacant terminals (“Upper_Terminals”,  symbols) and lower boundary120′ with 8 non-vacant terminals (“Lower_Terminals”,  symbols). Arabicnumbers 1-6 at the terminals illustrate nets 1-6 which should beestablished according to the netlist (see also FIG. 7.4 of reference[1]. For convenience, columns and tracks and conductive connections ofthe nets are not shown. Assigning trunks to tracks can start either atlower boundary 120′ (direction of incrementing index i, cf. FIG. 1) orat upper boundary 110′ (opposite direction with primed index i′). Thepreferred trunk assignment direction (PTAD) can be determined byanalyzing VCG 150′ and comparing a further channel parameter RF (for“ramification factor”) to a predetermined value. This is performed, forexample, in step 225 of method 200 explained later in connection withFIG. 8.

VCG 150′ has 6 nodes for each net ({circle around (1)} to {circle around(6)} symbols for nets 1 to 6, respectively) and directed edges (edge 1″from node {circle around (1)} to node {circle around (2)}, edge 2′ fromnode {circle around (2)} to node {circle around (3)}, edge 1″ from node{circle around (1)} to node {circle around (4)}, edge 3′ from node{circle around (4)} to node {circle around (5)}, and edge 3″ from node{circle around (4)} to node {circle around (6)}. Nodes {circle around(1)}, {circle around (2)} and {circle around (4)} are nodes from whichedges depart (“Edge_Departing_Nodes”), and nodes {circle around (2)},{circle around (3)}, {circle around (4)}, {circle around (5)}, and{circle around (6)} are nodes to which edges arrive(“Edge_Arriving_Nodes”). Nodes {circle around (2)} and {circle around(4)} belong to both groups.

Parameter RF is defined by the corresponding numbers of terminals andnodes as follows: $\begin{matrix}{{RF} = \frac{\left( {{{Upper}_{—}{Terminals}} + 1} \right)*{Edge}_{—}{Departing}_{—}{Nodes}}{\left( {{{Lower}_{—}{Terminals}} + 1} \right)*{Edge}_{—}{Arriving}_{—}{Nodes}}} & (2.2)\end{matrix}$

In the example of FIG. 2, parameter RF is obtained as: $\begin{matrix}{{RF} = {\frac{\left( {5 + 1} \right)*3}{\left( {8 + 1} \right)*5} = {\frac{18}{45} = 0.4}}} & (2.4)\end{matrix}$

For RF≦1 (as in the example), the PTAD is the direction from lowerboundary 120′ to upper boundary 110′ (index i). For RF>1, the PTAD isopposite (primed index i′).

In other words, for a task of routing nets in channel 100′ having afirst number (e.g., “Upper_Terminals”) of non-vacant terminals at afirst boundary (e.g., boundary 110′) and a second number(“Lower_Terminals”) of non-vacant terminals at a second boundary (e.g.,boundary 120′), a direction for assigning trunks to tracks (PTAD) can bedetermined with the following steps: (a) Obtaining VCG 150′ (with nodesand edges) of channel 100′; (b) Determining a first number of nodes inVCG 150′ from which edges depart and determining a second number ofnodes in VCG 150′ to which edges arrive; (c) Combining the first andsecond numbers of non-vacant terminals and the first and second numbersof nodes to a parameter (e.g., as in equation (2.4)); (d) Comparing theparameter to a predetermined value (e.g., “1”) and (i) in case theparameter smaller than or equal to predetermined value (e.g., RF≦1),determine the direction from the second boundary to the first boundary,or (ii) in case the parameter is larger than the predetermined value(e.g., RF>1), determine the direction from the first boundary to thesecond boundary.

FIG. 3 illustrates simplified diagram 180 of the complexity functionintroduced in connection with equation (1.18). The complexity functionhas up to 4 variables: CS, MCDS, r(D,P) and BS. For convenience, diagram180 illustrates in a two-dimensional vector room (R²) a similar, butsimplified function Z=f (X, Y) with variables Y versus X, that is:$\begin{matrix}{Z = {\frac{Y}{a_{Y}} + \frac{X}{a_{X}}}} & (3.2)\end{matrix}$

Result Z stand for complexity, and arguments X and Y stand for anychannel parameters in the complexity function (equation (1.18)) andparameters a_(X) and a_(Y) stand for any corresponding weightingparameters (from a₁ to a₄). In diagram 180, the function is illustratedfor a result Z=1 with values alongside line 185 connecting points(0,a_(Y)) on the Y-axis and (a_(X),0) on the X-axis.

The magnitude relation of the channel complexity (corresponds to Z) to athreshold classifies a first channel complexity type (“TYPE 1”) and asecond channel complexity type (“TYPE 2”). The types are convenientlydistinguished as:

TYPE 1 in case of: Complexity≦Threshold  (3.4)

TYPE 2 in case of: Complexity>Threshold  (3.6)

Conveniently, the threshold has value of:

Threshold=1,  (3.8)

If arguments X, Y form a value pair (X,Y) (reference 181) belowthreshold line 185 or on line 185, then Z has values below 1 or equal to1 (TYPE 1, complexity≦threshold). Otherwise, if arguments X, Y form avalue pair above line 185 (reference 182), then Z has values above 1(TYPE 2, complexity>threshold). Extreme pairs are pair (X, Y)=(0, 0) forTYPE 1 (reference 183) and pair (X, Y)=(1, 1) for TYPE 2 (reference184). Describing a threshold in the R²-representation of diagram 180 bythreshold line 185 is convenient for explanation. Persons of skill inthe art are able to derive equivalents to line 185 as in other vectorsrooms, such as in R³ and in R⁴ for more or all parameters.

FIGS. 4-5 illustrate simplified schematic diagrams of channels 600 and700, respectively, and their corresponding vertical constraint graphs(VCGs) 650 and 750, respectively, by way of example. Channels 600 and700 both have 5 columns (631-635 in FIG. 4, 731-735 in FIG. 5). Inchannels 600 and 700, 3 nets (bold lines, references 601-603 and701-703) of conductive connections are provided between terminalslocated at the same columns. Channel 600 has 3 tracks 641-643. With only2 tracks 741-742, channel 700 has a smaller channel height. Forconvenience, the nets are illustrated only by trunks, doglegs, andbranches.

In channel 600, nets 601-603 are branch-trunk-branch combinations. VCG650 of channel 600 has node 653 (symbol {circle around (3)} for net603), node 652 (symbol {circle around (2)} for net 602), and node 651(symbol {circle around (1)} for net 601). VCG 650 represents aconstraint from net 603 to net 602 (in column 634) by edge 662 from node653 to node 652, and represents a constraint from net 602 to net 601 (incolumn 632) by edge 661 from node 652 to node 651. The longest path inVCG 650 is formed by 3 nodes 653, 652 and 651 (maximum path length=3nodes).

In channel 700, nets 701 and 703 are branch-trunk-branch combinationssimilar to nets 601 and 603, respectively, of channel 600. Net 702 is acombination of a branch, trunk 702″, a dogleg, trunk 702′, and a furtherbranch. VCG 750 of channel 700 has node 753 (for net 703), node 752′(for trunk 702′), node 752″ (for trunk 702″), and node 751 (for net701). VCG 750 represents a constraint from net 703 to trunk 702′ (incolumn 732) by edge 762, and represents a constraint from trunk 702″ tonet 1 (in column 734) by edge 761. The longest path in VCG 750 is formedonly by only 2 nodes (maximum path length=2 nodes).

FIG. 6 illustrates a simplified schematic diagram of non-assigned trunk450 and track 440 by way of example. For convenience, FIG. 6 alsoindicates columns 430 (e.g., indices j=1 to 10). For simplicity, FIG. 6illustrates only a single layer (index m). Persons of skill in the artknow, based on the description herein, to apply FIG. 6 also for M>1layers. In the example of FIG. 6, non-assigned trunk 450 is locatedacross columns j_(START) and j_(END) (eg., j_(START)=3, j_(END)=7). Intrack portion 441 (“occupied portion”, dashed line) located within area490 (hatched), trunk 450 can not accommodate trunk 450. In track portion442 (“free portion”, plain line), track 440 can accommodate trunk 450partially or totally.

To accommodate trunk 450 on track 440 or on other tracks in layer m (orin other layers), trunk 450 can optionally be broken into trunk pieces451 and 452 (see break line 453). The number PIECES of trunk pieces canbe 2 or higher (PIECES≧2). For further discussion, non-assigned trunk450 can be identified by indices k (trunk within a track), i (track) andm (layer).

A non-assigned trunk criterion Cr (k,i,m) for each non-assigned trunk isderived from a number of Q preliminary assignment components which areexplained next. For simplicity of explanation, the indices k, i and mare left out for the components and for criterion Cr. It is an advantageof the present invention that a criterion considers track i, location kon track i, and the layer m into which the trunk could be placed.

When non-assigned trunk 450 is assigned (cf. method step 230, explainedlater), piece 452 is coordinated to portion 442 of track 440. This isillustrated dashed as assigned trunk piece 452′. The components areintermediate results which are obtained as if a non-assigned trunk(e.g., trunk 450) would have been already assigned to a track (e.g., asportion 452′). In other words, the Q criterion components are aquantitative representation of a tentative assignment. As explainedlater, a decision to assign or not to assign a trunk is made later usingcriterion Cr.

The first component “LocD” defined as the maximum ofLocal_Channel_Density (j) for non-assigned trunk 450 wherein j goesacross all columns (e g., j_(START)=3 to j_(END)=7) of trunk 450, thatis: $\begin{matrix}{{LocD} = {\overset{j_{END}}{\underset{j_{START}}{MAX}}{Local}_{—}{Channel}_{—}{Density}\quad (j)}} & (6.2)\end{matrix}$

Component LocD has been explained in reference [5].

The second component “PIECES” is the number of pieces of a non-assignedtrunk. In the example, trunk 450 has PIECES=2 pieces 451 and 452. Thecomponent PIECES are mentioned in references [3] and [6].

The third component “BD” is defined as follows: $\begin{matrix}{{BD} = \frac{\left( {1 + {Bot}} \right)}{\left( {1 + {Top} + {PIECES}} \right)}} & (6.4)\end{matrix}$

wherein “Top” stands for the number of non-vacant terminals on the upperboundary (e.g., in FIG. 1, Top=3 for terminals 113, 116, 118 on boundary110), and “Bot” stands for the number of non-vacant terminals on thelower boundary (e.g., Bot=3 for terminals 121, 124, 128 on boundary120).

The fourth component “Trunk_Length” has been explained above and inreference [2]. For example, trunk 450 of FIG. 6 has a lengthTrunk_Length=5.

The fifth component “LPr” (for “Layer Priority”) is, preferably, annon-negative real number LPr≧0. LPr is conveniently defined as:$\begin{matrix}{{Lpr} = \frac{{Lpr}\quad ({init})}{{Penalty}_{—}{Direction}*{Penalty}_{—}{Layer}}} & (6.6)\end{matrix}$

This component depends also on the layers where the trunk is located.(a) Variable Lpr (init) is a specific value for the material ofconductive connections (i.e. trunks, branches, doglegs). Conveniently,Lpr (init) is defined as Lpr (init)=1 for aluminum. For other materials,Lpr (init) is, preferably, the ratio of the specific Ohmic resistance ofaluminum to the specific Ohmic resistance of the other material. Forexample, for conductive connections made from polysilicon, this variablewould be around Lpr (init)=1/300.

(b) Penalty_Direction is a number which depends on a channel model. In afirst model, the channel has M′≧1 layers in which only trunks arelocated and has M″≧1 layers in which only branches/doglegs are located(M′+M″=M). Reference [1] illustrates the first model (“reserved layermodel”) by example in connection with FIG. 7.3. In the example of FIG. 1of the present application, channel 100 can have M=2 layers wherein M′=1layer (index m=1) has only trunks and M″=1 layer (index m=2) has onlybranches and doglegs. If the non-assigned trunk would be assigned suchthat the channel would to the first model, then Penalty_Direction=1 forthe trunks located in any of the M′ trunk layers.

In a second model (“unreserved layer model”), the channel has M′″>1layers in which both trunks and branches/doglegs are located. For trunksin such layers, this variable would be Penalty_Direction>1. For example,a convenient value is Penalty_Direction 100. It is an advantage of thepresent invention, that both models can be considered, and that themodel distinction goes into criterion Cr.

(c) Penalty_Layer is an indicator which is applied when channel 100 hasM>2 layers. For M=1 or M=2, equation (6.6) is solved forPenalty_Layer=1. Penalty_Layer is a function of the z-axis (cf. FIG. 1),or in other words, a function m, that is:

Penalty_Layer=Function (m)  (6.8)

For M=3, convenient values for Penalty_Layer are:

Penalty_Layer=1 (for m=1)  (6.10)

Penalty_Layer=10 (for m=2)

Penalty_Layer=1 (for m=3)

Generally, Penalty_Layer can be conveniently obtained by a squarefunction Function (m) which has values of Function (1)=1 and Function(M) and which has a maximum for M/2 (even M) or (M+1)/2 (odd M).

The sixth component “DerP” is the highest difference between the P(j)values (j between j_(START) to j_(END)) of non-assigned trunk. Theseventh component “Max_Path” is the maximum number of nodes in a VCGrepresentation of required connections between non-vacant terminals.This component has been explained in reference [4].

Criterion Cr is calculated as the multiple product of the nq^(th) powerof the Q components (“Component_q”), that is: $\begin{matrix}{{Cr} = {\overset{Q}{\prod\limits_{q = 1}}\left( {{Component}_{—}q} \right)^{nq}}} & (6.12)\end{matrix}$

The power nq is a factor significance and can be any positive andnegative real number. As used herein, a factor significance vector n(underscoring for “vector”) is defined as the plurality of nq from q=1to Q, that is:

n=(n 1, n 2, . . . , nq, . . . , nQ)  (6.14)

The number Q=7 is convenient for implementing the present invention, butnot necessary. Cr can be calculated with more or with less components.If the Q=7 components are used, Cr is calculated as follows:$\begin{matrix}\begin{matrix}{{Cr} = \quad {({LocD})^{n1}*}} \\{\quad {({PIECES})^{n2}*}} \\{\quad {({BD})^{n3}*}} \\{\quad {\left( {{Trunk}_{—}{Length}} \right)^{n4}*}} \\{\quad {({LPr})^{n5}*}} \\{\quad {({DerP})^{n6}*}} \\{\quad \left( {{Max}_{—}{Path}} \right)^{n7}}\end{matrix} & (6.16)\end{matrix}$

For nq=0, the multiplication factor becomes 1 and the component is notconsidered. Preferably, factor significance vector n can be changed initerations (explained later). Preferably, factor significance vector nis initially selected from predetermined vectors ₍₁₎n and ₍₂₎n dependingon the channel complexity type (cf. equations (3.4) to (3.6)).

For example, values for vector n are:

₍₁₎ n=(1.79, −0.14, 1.51, 1.35, 0.00, 0.00, 0.59)  (6.20)

₍₂₎ n=(−0.14, 0.62, 0.34, 1.10, −1.50, −0.05, 0.23)  (6.22)

Based on the description herein, persons of skill in the art can selectfactor significance vector n with other values. Convenient values rangesare given in the following table:

(6.24) TYPE 1, vector ₍₁₎n TYPE 2, vector ₍₂₎n 1.6 ≦ n₁ ≦ 2.0 −0.2 ≦ n₁≦ 0.0 −0.2 ≦ n₂ ≦ 0.0 0.4 ≦ n₂ ≦ 0.8 1.3 ≦ n₃ ≦ 1.7 0.1 ≦ n₃ ≦ 0.5 1.1 ≦n₄ ≦ 1.5 0.9 ≦ n₄ ≦ 1.3 −0.1 ≦ n₅ ≦ 0.1 −1.7 ≦ n₅ ≦ −1.3 −0.1 ≦ n₆ ≦ 0.1−0.2 ≦ n₆ ≦ 0.0 0.4 ≦ n₇ ≦ 0.8 0.0 ≦ n₇ ≦ 0.4

FIG. 7 illustrates simplified schematic diagrams of channels 501 and 502to explain a quality function QF. Channels 501 and 502 each have I=3tracks (common references 551 for i=1, 552 for i=2 and 553 for i=I) withtrunks 503 and 504, respectively. In channel 501, trunks 503 arereferred to by indices (k,i): trunks (1,1) and (2,1) in track 551,trunks (1,2), (2,2) and (3,2) in track 552, and trunks (1,3) and (2,3)in track 553. In channel 502, the indices for trunks 504 arecorresponding. For simplicity, terminals, doglegs, and branches are notillustrated.

The quality function QF is conveniently calculated as follows:$\begin{matrix}{{{Relative}_{—}{Trunk}_{—}{Length}} = \frac{\sum\limits_{k = 1}^{K{(i)}}{{Trunk}_{—}{{Length}\left( {k,i} \right)}}}{{Track}_{—}{Length}}} & (7.2) \\{\begin{matrix}{{QF} = \quad {\sum\limits_{i = 1}^{I}{\left\lbrack {{Relative}_{—}{Trunk}_{—}{Length}} \right.(i){*}}}}\end{matrix}\begin{matrix}\left. {\exp \left( {3*\left( {i - {{Init}_{—}{Track}}} \right)} \right)} \right\rbrack\end{matrix}} & (7.4)\end{matrix}$

“Relative_Trunk_Length (i)” is the relative length of the sum of trunklengths in relation to a total track length “Track_Length”. “Init_Track”stands for a track index i between i=1 and I. Preferably, Init_Track isaround I−1, I−2, or I−3, but other values can also be used. This has theadvantage, that tracks between i=1 and Init_Track−1 are not consideredand calculation time can be saved. The “exp” symbol stands here for “tothe power of 10” (i.e. 10^(3*(i−Init) _(^(—)) ^(Track))). To use thetrack index i in the exponent gives additional weighing to the lasttracks Init_Track, Init_Track+1, etc. Using the decimal power isconvenient, but not necessary for the present invention. Persons ofskill in the art are able, based on the description herein to apply asimilar weighting with different bases.

In the example of FIG. 7, for channel 501, Relative_Trunk_Length (i) are

87.3% for track 551  (7.6)

64.2% for track 552

45.2% for track 553

resulting in a quality function of QF₁=452,642,873. For channel 502,Relative_Trunk_Length (i) are

45.2% for track 551  (7.8)

64.2% for track 552

87.3% for track 553

resulting in a quality function of QF₂=873,642,452.

In the example of FIG. 1, the trunks in tracks i=1 and i=2 have relativelengths of

Relative_Length (1)=[(3+3)/8]≈0.75  (7.10)

Relative_Length (2)=[(4+4)/8]≈1.0  (7.12)

(track 2 completely filled)

and the quality function QF (for Init_Track=1) is obtained as:

QF=0.75*10⁰+1.0*10₃=1000.75  (7.14)

Preferably, QF has small values. The smaller QF, the better the routing.For example, the routing in channel 501 is better than in channel 502.Preferably, quality function QF is calculated only for these layerswhich have only trunks (“horizontal layers”). Optionally, an average forQF of two or more layers can be used.

FIG. 8 illustrates a simplified flow chart diagram of method 200 of thepresent invention. Method 200 comprises the following steps: creatinginitial trunks step 205, computing channel parameters step 210,classifying complexity and estimating channel height step 220, assigningtracks to layers step 230, determining channel quality function step240, optimizing step 250 (query 255 “COMPLY WITH BREAKING CONDITION?”,modifying step 256) with a conditional repetition of steps 230 and 240(see repetition line 260, 261). Determining trunk placement directionstep 225 is optional and follows step 220. If step 225 is not performed,then step 230 uses a default value. For convenience, the steps of method200 are illustrated as blocks. Arrows between the blocks indicate apreferred method flow. Start step 201 (“START”) comprises necessarypreparations, such as loading circuit data, and stop step 299 (“STOP”)comprises necessary arrangements to use the optimization results, suchas saving the final channel layout to memory. Start step 201 and stopstep 299 are as such known in the art.

Method 200 is, preferably, executed by a computer which has a processorto interchange data, instructions (computer program), preliminary andfinal results with a memory or an interface. Preferably, the computerprogram with the method is stored on a storage device. For simplicity,such a computer, details of the program and the storage device are notshown. Persons of skill in the art, are able, based on the descriptionherein, to implement method 200 without the need of further explanation.

In creating initial trunks step 205, the processor receive a netlist andlocation coordinates (e.g., X and Y) of the terminals and determines apreliminary number I of trunks. Step 205 is as such known in the art.

In computing channel parameters step 210, the processor computes a setof channel parameters. The parameters are, for example, parameters, CS,MCDS, r(D,P), BS and RF explained above.

In classifying complexity and estimating channel height step 220, theprocessor relates the channel parameters to the predetermined weightingparameters and classifies the channel complexity into the first type(“TYPE 1”) or the second type (“TYPE 2”). The processor also selects thefactor significance vector n according to the complexity type. Then, theprocessor estimates the channel height Channel_Height. (cf. equation1.30).

In determining trunk placement direction step 225, the processorcalculates parameter RF and determines a preferred vertical placementdirection from i=1 to i=1 (default value, cf. index i in FIGS. 1-2) orfrom i=I to i=1 (as primed index i′ in FIG. 2).

In assigning tracks and layers step 230, the processor provides thetrack and layer assignment for channel 100 by using the preliminarychannel height Channel_Height. A flow chart diagram of modified step230′ with new features according to the present invention is illustratedin FIG. 9.

In step 230, the processor determines, among others, the lengths of eachtrunk, hereinafter labeled “Trunk_Length (k, i)” with k=1 to K(i) as acounter for trunks (in each track i), and i=1 to I as the abovementioned track index. In reference to the example of FIG. 1, values arein track i=1 (K(1)=2), Trunk_Length (1, 1)=2 horizontal units (trunk141, i=1) and Trunk_Length (2, 1)=2 horizontal units (trunk 142, i=1),and in track i=2 (K (2)=2), Trunk_Length (1, 2)=3 horizontal units(trunk 143, i=I=2), and Trunk_Length (2, 2)=3 horizontal units (trunk144, i=2).

It is an advantage of the present invention, that step 230′ (details seeFIG. 9) uses the factor significance vector n.

In determining channel quality function step 240, the processordetermines the quality function QF for channel 100 using track and layerassignment of step 230. According to the invention, the processor usessignificance vector n to obtain QF.

Optimizing step 250 (dashed frame) comprises (a) the check of aniteration criterion (query step 255) and (b), conditionally, themodification of factor significance vector n (step 256) and repetitionof steps 230 and 240 (lines 260, 261). Optionally, inst step 256, thequality function QF is updated based on the previously performedassignment.

Preferably, optimizing step 250 is performed as a downhill simplexoptimization known in the art. This is convenient, but not essential forthe present invention. For example, such a downhill simplex optimizationis described in: [7] W. Spendley, G. R. Hext, F. R. Himsworth:“Sequential Application of Simplex Design in Optimization andEvolutionary Operations”, Technometrics, 1962, vol. 4, No. 4, page441f.; [8] J. A Nelder and R. Mead, Computer Journal, vol. 7, 1965, pp.308-313; [9] David M. Himmelblau. “Applied Nonlinear Programming”,McGraw-Hill Book Company, 1972.

For simplicity, all details of step 250 are therefore not illustrated.Query step 255 can be described as answering to the question “COMPLYWITH BREAKING CONDITION?” The term “breaking condition” is used forpredetermined conditions which have to be met in order to stop theiteration. For example, and with no intention to be limiting, conditionscan be:

(a) The processor can abort the iteration upon reaching a predeterminedmaximum execution time. In an convenient implementation, the processorcounts the iterations and stops at a predetermined maximum number.

(b) The processor can abort the iteration when the quality function hasnot significantly changed during a predetermined number of iterations.

(c) The processor aborts the iteration depending on an optimizationtest. For example, for downhill simplex optimization, the elements ofvector n determine a so-called simplex value which is compared to apredetermined reference value.

It is not important for the present invention, whether (a) to (c) havebe all in compliance (logical and relation) or whether only some have tobe (logical or relation). Persons of skill in the art are able, based onthe description herein, to apply other breaking conditions.

Upon compliance (“YES”-line 251 to stop 299), method 200 is terminated.Otherwise, the processor modifies vector n (step 256) and goes to step230 (cf. “NO”-line 260).

FIG. 9 illustrates a simplified flow chart diagram of modified step 230′if method 200 of FIG. 8 in a preferred embodiment of the presentinvention. Persons of skill in the art are able, based on thedescription herein, to change step 230 without departing from the scopeof the invention. In FIGS. 8-9, lines 231 and 232 are corresponding andindicate begin and end of step 230/230′. Step 230′ comprises buildingVCG step 310, query step 380 (“NON-ASSIGNED TRUNKS REMAINING?”),providing non-assigned trunk criterion step 330, sorting non-assignedtrunks step 340, assigning trunk step 350, modifying VCG step 360, andfilling step 375 (dashed frame with query step 370 and writing filledtrack to channel step 320). Executing initially step 310, the processorexecutes steps 330, 340, 350, 360 and 375 as long as non-assigned trunksremain (“YES”-line of query step 380). Such a trunk can be, for example,a trunk a the top of the sorted criterion list (cf. step 340). Otherwise(“NO” on line 232), the processor continues method 200 with step 240(cf. FIG. 8).

In building VCG step 310, the processor builds a VCG based on thenon-assigned trunks. Such a step is known in the art, so that persons ofskill in the art can implement step 310 without further explanationherein.

Query step 380 explained above is executed next.

In providing non-assigned trunk criterion step 330, the processorcalculates criterion Cr for each non-assigned trunk or for trunkportions. As a result, the processor obtains a criterion list in whichthe values of Cr are related to trunk indices (e.g., i and k). Replacingthe trunk indices by letters “A”, “B”, and “C” as convenient labels forthe trunks, the list is, for example, Cr (A)=2.4, Cr (B)=1.0, and Cr(C)=8.0. In other words, the still non-assigned trunks (or portions)receive characteristic values (Cr).

In sorting non-assigned trunks step 340, the processor sorts thecriterion list for ascending Cr-values. (e.g., to Cr (B), Cr (A), Cr(C)). Preferably, the trunks (or trunk portions) which fit best into thetrack (cf. FIG. 6, track portion 442) are these with the highestCr-values (e.g., Cr (C)).

In assigning trunk step 350, the processor assigns the best fittingtrunks (or portions) to the track.

In modifying VCG step 360, the processor modifies the VCG using theassignment of step 350.

In filling step 375, the processor executes step 320 for tracks alreadyfilled with trunks (“YES”-line 371 of query “IS TRACK ALREADY FILLED?”).In writing filled track to channel step 320, the processor stores thechannel assignment. Step 320 can also be implemented without furtherexplanation. If in the previous steps no suitable trunks or trunkportions have been identified, then the processor leaves out step 320(“NO”-line 372 of query step 370 going to step 380).

FIG. 10 illustrates a simplified block diagram of routing system 900according to the present invention. System 900 is intended to be anexample for explanation. Those of skill in the art are able, based onthe description herein, to implement the present invention on othersystems, such as, for example, on all-purpose processors.

System 900 conveniently comprises the following elements: memory 910,parameter generator 920, direction discriminator 930 (optional), heightgenerator 940, comparator/selector 950, quality checker and optimizationcontroller 960. Plain lines with arrows between the elements illustratesignals representing the above explained variables. A dashed line fromcontroller 960 to assignment generator 970 illustrates controlling.

Memory 910 conveniently stores a netlist, the basic descriptors, the “1”(cf. RF), weighting parameters a₁ to a₄, Threshold (cf. equation (3.4),(3.6)), initial n-vectors, the breaking condition (cf. step 250),Factor, Offset, and others.

Parameter generator 920 receives the netlist and the descriptors,performs method step 210 and provides channel parameters CS, MCDS,r(D,P), and BS. Comparator/selector 950 receives CS, MCDS, r(D,P), andBS, receives parameters a₁ to a₄, Threshold, the initial n-vector.Performing step 220, comparator/selector 950 provides Complexity andselects either vector ₍₁₎n or ₍₂₎n. Height generator 940 receivesComplexity, Factor, Offset, and—while participating also in step220—provides Channel_Heigth. Direction discriminator 930 optionallyreceives “1” and the netlist and provides PTAD (step 225). Assignmentgenerator 970 receives, “1”, the netlist, the descriptors, PTAD,Channel_Heigth, and, preferably, performs steps 205 and 230. Thereby,assignment generator 970 provides the trunk assignment. Quality checkerand optimization controller 960 performing steps 240 and 250 receivesthe trunk assignment, the breaking condition, and the selected vector n(₍₁₎n or ₍₂₎n), and controls assignment generator 970 (see dashed linein FIG. 10 and repetition line 260, 261 in FIG. 8).

Having described details of method 200, the present invention is nowdescribed as a method for manufacturing an electronic device havingchannel 100 with connections (e.g., trunks) for wiring a number of netswhich are selectively located in predetermined locations (e.g., tracksidentified by indices k, i, m) in a common direction (e.g., horizontal),wherein the locations can be in common layers (see index dm, cf.unreserved layer model) or in different layers (see index m, cf.reserved layer model) of the channel. Preferably, the method comprisesthe-steps of:

(i) Providing preliminary assignments for the connections to thelocations and deriving pluralities of preliminary assignment components(e.g., LocD, PIECES, BD, Trunk_Length, LPr, DerP, Max_Path, depending onk, i, m) for each preliminary assignment (e.g., see steps 205, 210, 220,225); (ii) Providing a plurality (see Cr(A), Cr(B), Cr(C)) of criteria(e.g., Cr (i,k,m)) for each preliminary assignment by combining thepreliminary assignment components to a significance vector (e.g., vectorn) (cf. step 330, 340); (iii) Scanning the plurality of criteria andselecting a preliminary assignment (e.g., step 340); and (iv) Convertingthe preliminary assignment to a permanent assignment (cf. step 350).

Also, the present invention can be described as a method for routing anet in the channel of a circuit having internal terminals (e.g.,non-terminals) which is performed in an apparatus (e.g., all-purposecomputer) for optimizing the layout. The method has the following methodsteps: (a) Assigning tracks (index i) and layers (index m) to trunks(index k, i, m) by selecting an assignment for which an assignmentcriterion has an extreme value (e.g., highest Cr, step 340), thecriterion (e.g., Cr) being provided by relating a plurality ofassignment components (e.g., LocD, PIECES, BD, Trunk_Length, LPr, DerP,Max_Path) to a significance vector (e.g., vector R) (cf. step 230); (b)Determining a quality function (e.g., QF) of the assignment (cf. step240); and (c) Optimizing the assignment by repeating steps (a) and (b)and modifying the significance vector (step 256).

Preferably, in step (a), the criterion (Cr) is calculated as themultiple sum (Σ) of intermediate values (cf. ( )^(nq) in equation(6.16)), wherein each intermediate value is a component (e.g., LocD, . .. , or Max_Path) to the power of a vector element (e.g., nq) in thesignificance vector (e.g., vector n). In step (a), a significance vector(vector n) is used which is selected from a set of two or more vectors(e.g., ₍₁₎n and ₍₂₎n, wherein the selection is determined by a channelcomplexity (e.g., Complexity). The channel complexity (e.g., Complexity)is a function (cf. equation (1.18) of channel parameters (e.g., CS,MCDS, r(D,P), and BS) and predetermined weighting factors (e.g., a₁ toa₄).

While the invention has been described in terms of particularstructures, systems, and methods, those of skill in the art willunderstand based on the description herein that it is not limited merelyto such examples and that the full scope of the invention is properlydetermined by the claims that follow.

What is claimed is:
 1. A method for routing nets with trunks in achannel, said method comprising the following steps: (a) computing a setof channel parameters; (b) classifying a channel complexity into a firsttype or a second type by relating said channel parameters topredetermined weighting parameters and estimating a preliminary channelheight from said channel parameters; (c) providing a preliminary trackand layer assignment for trunks using said preliminary channel height inaccordance with the classification of step (b); (d) determining aquality function for said channel using said track and layer assignment;(e) conditionally repeating steps c) and d) until said quality functionis in a predetermined relation to a predetermined breaking condition;and (f) converting said preliminary track and layer assignment into apermanent assignment.
 2. The method for routing of claim 1, wherein insaid step (a), a first channel parameter is the ratio between an averagechannel density and a maximum channel density.
 3. The method for routingof claim 1, wherein in said step (a), a second channel parameter is theratio between the number of saturated columns and the total number ofcolumns in said channel.
 4. The method for routing of claim 1, whereinin said step (a), a third channel parameter is a correlation coefficientbetween a channel density and a path length of a vertical constraintgraph.
 5. The method for routing of claim 1, wherein in said step (a), afourth channel parameter is the ratio between the number of occupiedcolumns and the total number of columns.
 6. The method for routing ofclaim 1, wherein in step (e), downhill simplex iteration is applied. 7.The method for routing of claim 1, wherein in step (d), the qualityfunction is obtained by estimating trunk lengths in relation to a tracklength.
 8. The method for routing of claim 1, wherein in step (c), thepreliminary track and layer assignment is selected by using anassignment criterion.
 9. The method of claim 1, wherein in step (c) thepreliminary track and layer assignment is selected by an assignmentcriterion which is related to a plurality of components and selectivelya first significance vector for said first type and a secondsignificance vector for said second type.
 10. The method of claim 9,wherein in step (e), either the first significance vector or the secondsignificance vector is modified.
 11. A method for manufacturing anelectronic device having a channel with connections for wiring a numberof nets which are selectively located in predetermined locations in acommon direction, wherein said locations can be in common layers or indifferent layers of said channel, said method comprising the steps of:providing preliminary assignments for said connections to said locationsand deriving pluralities of preliminary assignment components for eachpreliminary assignment; providing a plurality of criteria for eachpreliminary assignment by relating the preliminary assignment componentsto a significance vector; from said plurality of criteria, selecting apreliminary assignment; and converting said preliminary assignment to apermanent assignment.
 12. A method for routing a net in a channel of acircuit having terminals to be coupled across the channel, said methodbeing performed by an apparatus for optimizing and comprising thefollowing steps: (a) assigning tracks and layers to trunks by selectingan assignment for which an assignment criterion has an extreme value,said criterion being provided by relating a plurality of assignmentcomponents to a significance vector; (b) determining a quality functionof said assignment; (c) optimizing said assignment by repeating steps(a) and (b) and modifying said significance vector.
 13. The method ofclaim 12 wherein in step (a), said criterion is calculated as themultiple sum of intermediate values, wherein each intermediate value isa component to the power of a vector element in said significancevector.
 14. The method of claim 12 wherein in step (a) a significancevector is used which is selected from a set of two or more vectors,wherein the selection is determined by a channel complexity.
 15. Themethod of claim 14 wherein said channel complexity is a function ofchannel parameters and predetermined weighting factors.
 16. The methodof claim 12 wherein in step (a), said plurality of assignment componentshas a first component which is a maximum of a local channel density. 17.The method of claim 12 wherein in step (a), said plurality of assignmentcomponents has a second component which is a number of trunk pieces. 18.The method of claim 12 wherein in step (a), said plurality of assignmentcomponents has a third component which is related to the number ofnon-vacant terminals in an upper boundary and in a lower boundary ofsaid channel.
 19. The method of claim 12 wherein in step (a), saidplurality of assignment components has a fourth component which is atrunk length.
 20. The method of claim 12 wherein in step (a), saidplurality of assignment components has a fifth component which indicatesa layer priority and considers different channel models.
 21. The methodof claim 12 wherein in step (a), said plurality of assignment componentshas a sixth component which is the highest difference between thelengths of the longest paths in a vertical constraint graph for trunksgoing through a column in said channel.
 22. The method of claim 12wherein in step (a), said plurality of assignment components has aseventh component which is the maximum number of nodes in a verticalconstraint graph representation of required connections betweennon-vacant terminals.
 23. The method of claim 12 wherein in step (c),optimizing is performed by downhill simplex optimization.
 24. The methodof claim 12 wherein in said step (c), optimizing is aborted when saidquality function has not significantly changed.
 25. A program storagedevice embodying a program executable by a computer to perform a methodfor determining a trunk assignment direction for routing nets in achannel, said channel having a first number of non-vacant terminals at afirst boundary and a second number of non-vacant terminals at a secondboundary, said method comprising the following steps: obtaining avertical constraint graph (VCG) with nodes and edges of the channel;determining a first number of nodes in the VCG from which edges departand determining a second number of nodes in the VCG to which edgesarrive; combining the first and second numbers of non-vacant terminalsand the first and second numbers of nodes to a parameter; and comparingthe parameter to a predetermined value and (i) in case the parameter issmaller than or equal to predetermined value, determining the directionfrom the second boundary to the first boundary, or (ii) in case theparameter is larger than the predetermined value, determining thedirection from the first boundary to the second boundary.
 26. Theprogram storage device of claim 25 wherein in said combining step ofsaid method, the first number of non-vacant terminals isUpper_Terminals, the second number of non-vacant terminals isLower_Terminals, the first number of nodes is Edge_Departing_Nodes, andthe second number of nodes is Edge_Arriving_Nodes, and the parameter isRF and calculated as:${{RF} = \frac{\left( {{{Upper}_{—}{Terminals}} + 1} \right)*{Edge}_{—}{Departing}_{—}{Nodes}}{\left( {{{Lower}_{—}{Terminals}} + 1} \right)*{Edge}_{—}{Departing}_{—}{Nodes}}},$

and wherein for RF≦1, the direction goes from the second boundary to thefirst boundary and for RF>1, the direction goes from the first boundaryto the second boundary.